package cn.juque.systemservice.auth;

import cn.hutool.core.collection.CollUtil;
import cn.juque.common.abstracts.AbstractRoleDataManagement;
import cn.juque.common.base.BaseOperator;
import cn.juque.common.constants.YesOrNoEnum;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Set;

/**
 * @author nuoka
 * @version 1.0.0
 * <li>字典权限管理</li>
 * @date 2021/12/15 23:03
 **/
@Component("dictAuthDataManagement")
public class DictAuthDataManagement extends AbstractRoleDataManagement {

    private static final Set<String> ROLE_ID_LIST = CollUtil.newHashSet();

    /**
     * 获取机构范围的脚本
     *
     * @param operator   操作人
     * @param includeSub 是否包含下级
     * @return 脚本
     */
    @Override
    protected String getOrgScript(BaseOperator operator, YesOrNoEnum includeSub) {
        return NO_DATA_SCRIPT;
    }

    /**
     * 获取员工本人的数据权限脚本
     *
     * @param operator 操作人
     * @return 脚本
     */
    @Override
    protected String getUserScript(BaseOperator operator) {
        return ALL_DATA_SCRIPT;
    }

    /**
     * 获取指定机构范围的权限脚本
     *
     * @param operator  操作人
     * @param orgIdList 指定的机构ID列表
     * @return 脚本
     */
    @Override
    protected String getCustomOrgScript(BaseOperator operator, List<String> orgIdList) {
        return NO_DATA_SCRIPT;
    }

    /**
     * 获取指定员工的权限脚本
     *
     * @param operator       操作人
     * @param employeeIdList 指定的员工id列表
     * @return 脚本
     */
    @Override
    protected String getCustomUserScript(BaseOperator operator, List<String> employeeIdList) {
        return NO_DATA_SCRIPT;
    }

    /**
     * 校验ID是否存在
     *
     * @param roleIdList 角色ID
     * @return true / false
     */
    @Override
    protected Boolean checkRole(List<String> roleIdList) {
        return CollUtil.containsAny(ROLE_ID_LIST, roleIdList);
    }
}
